package br.com.werp.regras.almoxarifado.integracao;

import br.com.werp.regras.geral.Debuger;
import br.com.werp.regras.geral.integracao.MasterDAO;
import br.com.werp.regras.geral.util.BeanUtil;
import br.com.werp.regras.geral.util.Constantes;
import br.com.werp.regras.geral.util.Dia;
import br.com.werp.regras.geral.util.Util;
import br.com.werp.regras.geral.vos.almoxarifado.EstoqueVO;
import br.com.werp.regras.geral.vos.tabelas.Estoque;

import java.sql.Connection;
import java.sql.PreparedStatement;

import java.util.List;


/**
 * @author Sobreira
 * Criado em 07/11/2005
 */
public class BloqueioDAO extends MasterDAO {
    private static BloqueioDAO bloqueioDAO;
    public static final String EXCLUIR_BLOQUEIO = "EXCLUIR_BLOQUEIO";

    private BloqueioDAO(String banco) throws Exception {
        super(banco);
    }

    public static BloqueioDAO getBloqueioDAO() throws Exception {
        if (bloqueioDAO == null) {
            bloqueioDAO = new BloqueioDAO(Constantes.BANCO);
        }

        return bloqueioDAO;
    }

    public void inserirEstoque(Object object, Estoque estoque)
        throws Exception {
        Connection connection = validarTransacao(object);
        inserirVO(connection, estoque, new String[] { "estq_id" });
    }

    public List pesquisarEstoque(Estoque estoque) throws Exception {
        Connection connection = getConexao();

        try {
            String where = "";

            if (estoque.getEstq_data() != null) {
                where += (" and estq_data like " +
                new Dia(estoque.getEstq_data()).getDataBanco());
                estoque.setEstq_data(null);
            }

            return pesquisarVO(connection, estoque, where, "estoque",
                new String[] { "estq_valor" });
        } finally {
            liberaConeccao(connection);
        }
    }

    public void excluirBloqueio(Object key, Estoque estoqueBanco)
        throws Exception {
        Connection conn = validarTransacao(key);

        String query = getQuery(EXCLUIR_BLOQUEIO);
        query = query.replaceAll(P01,
                new Dia(estoqueBanco.getEstq_data()).getDataBanco());

        PreparedStatement statement = conn.prepareStatement(query);
        Debuger.debugar(statement, this.getClass());
        statement.executeUpdate();
    }
}
